///******************************************************************************* // * Copyright (c) 2005, 2006 IBM Corporation and others. // * All rights reserved. This program and the accompanying materials // * are made available under the terms of the Eclipse Public License v1.0 // * which accompanies this distribution, and is available at // * http://www.eclipse.org/legal/epl-v10.html // * // * Contributors: // * IBM Corporation - initial API and implementation // *******************************************************************************/ //package org.eclipse.ui.tests.datatransfer; // //import java.io.ByteArrayInputStream; //import java.io.File; //import java.io.FileInputStream; //import java.io.IOException; //import java.io.InputStream; //import java.util.ArrayList; //import java.util.Enumeration; //import java.util.HashSet; //import java.util.Iterator; //import java.util.List; //import java.util.Set; //import java.util.zip.GZIPInputStream; //import java.util.zip.ZipEntry; //import java.util.zip.ZipFile; // //import org.eclipse.core.resources.IFile; //import org.eclipse.core.resources.IFolder; //import org.eclipse.core.resources.IProject; //import org.eclipse.core.resources.IResource; //import org.eclipse.core.runtime.CoreException; //import org.eclipse.core.runtime.IStatus; //import org.eclipse.core.runtime.NullProgressMonitor; //import org.eclipse.core.tests.harness.FileSystemHelper; //import org.eclipse.ui.dialogs.IOverwriteQuery; //import org.eclipse.ui.internal.wizards.datatransfer.ArchiveFileExportOperation; //import org.eclipse.ui.internal.wizards.datatransfer.TarEntry; //import org.eclipse.ui.internal.wizards.datatransfer.TarFile; //import org.eclipse.ui.tests.harness.util.FileUtil; //import org.eclipse.ui.tests.harness.util.UITestCase; // //public class ExportArchiveFileOperationTest extends UITestCase implements // IOverwriteQuery { // // private static final String FILE_NAME = "test"; // private static final String ZIP_FILE_EXT = "zip"; // private static final String TAR_FILE_EXT = "tar"; // private static final String[] directoryNames = { "dir1", "dir2" }; // private static final String[] fileNames = { "file1.txt", "file2.txt" }; // // private String localDirectory; // // private String filePath; // // private IProject project; // // private boolean flattenPaths = false; // private boolean excludeProjectPath = false; // // public ExportArchiveFileOperationTest(String testName) { // super(testName); // } // // public String queryOverwrite(String pathString) { // return ""; // } // // public void testExportStatus(){ // List resources = new ArrayList(); // resources.add(project); // ArchiveFileExportOperation operation = // new ArchiveFileExportOperation(resources, localDirectory); // // assertTrue(operation.getStatus().getCode() == IStatus.OK); // } // // public void testExportZip() throws Exception { // filePath = localDirectory + "/" + FILE_NAME + "." + ZIP_FILE_EXT; // List resources = new ArrayList(); // resources.add(project); // ArchiveFileExportOperation operation = // new ArchiveFileExportOperation(resources, filePath); // // operation.setUseCompression(false); // operation.setUseTarFormat(false); // openTestWindow().run(true, true, operation); // // verifyFolders(directoryNames.length, ZIP_FILE_EXT); // // } // // public void testExportZipCompressed() throws Exception { // filePath = localDirectory + "/" + FILE_NAME + "." + ZIP_FILE_EXT; // List resources = new ArrayList(); // resources.add(project); // ArchiveFileExportOperation operation = // new ArchiveFileExportOperation(resources, filePath); // // operation.setUseCompression(true); // operation.setUseTarFormat(false); // openTestWindow().run(true, true, operation); // verifyCompressed(ZIP_FILE_EXT); // } // // public void testExportZipCreateSelectedDirectories() throws Exception { // filePath = localDirectory + "/" + FILE_NAME + "." + ZIP_FILE_EXT; // List resources = new ArrayList(); // IResource[] members = project.members(); // for (int i = 0; i < members.length; i++){ // if (isDirectory(members[i])){ // IResource[] folderMembers = ((IFolder)members[i]).members(); // for (int k = 0; k < folderMembers.length; k++){ // if (isFile(folderMembers[k])){ // resources.add(folderMembers[k]); // } // } // } // } // ArchiveFileExportOperation operation = // new ArchiveFileExportOperation(resources, filePath); // // operation.setCreateLeadupStructure(false); // operation.setUseCompression(false); // operation.setUseTarFormat(false); // openTestWindow().run(true, true, operation); // flattenPaths = true; // verifyFolders(directoryNames.length, ZIP_FILE_EXT); // } // // public void testExportZipCreateSelectedDirectoriesWithFolders() throws Exception { // filePath = localDirectory + "/" + FILE_NAME + "." + ZIP_FILE_EXT; // List resources = new ArrayList(); // IResource[] members = project.members(); // for (int i = 0; i < members.length; i++){ // if (isDirectory(members[i])) // resources.add(members[i]); // } // ArchiveFileExportOperation operation = // new ArchiveFileExportOperation(resources, filePath); // // operation.setCreateLeadupStructure(false); // operation.setUseCompression(false); // operation.setUseTarFormat(false); // openTestWindow().run(true, true, operation); // excludeProjectPath = true; // verifyFolders(directoryNames.length, ZIP_FILE_EXT); // } // // public void testExportZipCreateSelectedDirectoriesCompressed() throws Exception { // filePath = localDirectory + "/" + FILE_NAME + "." + ZIP_FILE_EXT; // List resources = new ArrayList(); // IResource[] members = project.members(); // for (int i = 0; i < members.length; i++){ // if (isDirectory(members[i])){ // IResource[] folderMembers = ((IFolder)members[i]).members(); // for (int k = 0; k < folderMembers.length; k++){ // if (isFile(folderMembers[k])){ // resources.add(folderMembers[k]); // } // } // } // } // ArchiveFileExportOperation operation = // new ArchiveFileExportOperation(resources, filePath); // // operation.setCreateLeadupStructure(false); // operation.setUseCompression(true); // operation.setUseTarFormat(false); // openTestWindow().run(true, true, operation); // flattenPaths = true; // verifyCompressed(ZIP_FILE_EXT); // verifyFolders(directoryNames.length, ZIP_FILE_EXT); // } // // public void testExportTar() throws Exception { // filePath = localDirectory + "/" + FILE_NAME + "." + TAR_FILE_EXT; // List resources = new ArrayList(); // resources.add(project); // ArchiveFileExportOperation operation = // new ArchiveFileExportOperation(resources, filePath); // operation.setUseTarFormat(true); // operation.setUseCompression(false); // // openTestWindow().run(true, true, operation); // // verifyFolders(directoryNames.length, TAR_FILE_EXT); // } // // public void testExportTarCompressed() throws Exception { // filePath = localDirectory + "/" + FILE_NAME + "." + TAR_FILE_EXT; // List resources = new ArrayList(); // resources.add(project); // ArchiveFileExportOperation operation = // new ArchiveFileExportOperation(resources, filePath); // // operation.setUseTarFormat(true); // operation.setUseCompression(true); // openTestWindow().run(true, true, operation); // verifyCompressed(TAR_FILE_EXT); // } // // public void testExportTarCreateSelectedDirectories() throws Exception { // filePath = localDirectory + "/" + FILE_NAME + "." + TAR_FILE_EXT; // List resources = new ArrayList(); // IResource[] members = project.members(); // for (int i = 0; i < members.length; i++){ // if (isDirectory(members[i])){ // IResource[] folderMembers = ((IFolder)members[i]).members(); // for (int k = 0; k < folderMembers.length; k++){ // if (isFile(folderMembers[k])){ // resources.add(folderMembers[k]); // } // } // } // } // ArchiveFileExportOperation operation = // new ArchiveFileExportOperation(resources, filePath); // // operation.setCreateLeadupStructure(false); // operation.setUseCompression(false); // operation.setUseTarFormat(true); // openTestWindow().run(true, true, operation); // flattenPaths = true; // verifyFolders(directoryNames.length, TAR_FILE_EXT); // } // // public void testExportTarCreateSelectedDirectoriesWithFolders() throws Exception { // filePath = localDirectory + "/" + FILE_NAME + "." + TAR_FILE_EXT; // List resources = new ArrayList(); // IResource[] members = project.members(); // for (int i = 0; i < members.length; i++){ // if (isDirectory(members[i])) // resources.add(members[i]); // } // ArchiveFileExportOperation operation = // new ArchiveFileExportOperation(resources, filePath); // // operation.setCreateLeadupStructure(false); // operation.setUseCompression(false); // operation.setUseTarFormat(true); // openTestWindow().run(true, true, operation); // excludeProjectPath = true; // verifyFolders(directoryNames.length, TAR_FILE_EXT); // // } // // public void testExportTarCreateSelectedDirectoriesCompressed() throws Exception { // filePath = localDirectory + "/" + FILE_NAME + "." + TAR_FILE_EXT; // List resources = new ArrayList(); // IResource[] members = project.members(); // for (int i = 0; i < members.length; i++){ // if (isDirectory(members[i])){ // IResource[] folderMembers = ((IFolder)members[i]).members(); // for (int k = 0; k < folderMembers.length; k++){ // if (isFile(folderMembers[k])){ // resources.add(folderMembers[k]); // } // } // } // } // ArchiveFileExportOperation operation = // new ArchiveFileExportOperation(resources, filePath); // // operation.setCreateLeadupStructure(false); // operation.setUseCompression(true); // operation.setUseTarFormat(true); // openTestWindow().run(true, true, operation); // flattenPaths = true; // verifyCompressed(TAR_FILE_EXT); // verifyFolders(directoryNames.length, TAR_FILE_EXT); // // } // // protected void doSetUp() throws Exception { // super.doSetUp(); // project = FileUtil.createProject("Export" + getName()); // File destination = // new File(FileSystemHelper.getRandomLocation(FileSystemHelper.getTempDir()) // .toOSString()); // localDirectory = destination.getAbsolutePath(); // if (!destination.mkdirs()) // fail("Could not set up destination directory for " + getName()); // setUpData(); // flattenPaths = false; // excludeProjectPath = false; // } // // protected void doTearDown() throws Exception { // super.doTearDown(); // // delete exported data // File root = new File(localDirectory); // if (root.exists()){ // File[] files = root.listFiles(); // if (files != null){ // for (int i = 0; i < files.length; i++) // if (!files[i].delete()) // fail("Could not delete " + files[i].getAbsolutePath()); // } // root.delete(); // } // try { // project.delete(true, true, null); // } catch (CoreException e) { // fail(e.toString()); // } // finally{ // project = null; // localDirectory = null; // filePath = null; // } // } // // private void setUpData(){ // try{ // for(int i = 0; i < directoryNames.length; i++){ // IFolder folder = project.getFolder(directoryNames[i]); // folder.create(false, true, new NullProgressMonitor()); // for (int k = 0; k < fileNames.length; k++){ // IFile file = folder.getFile(fileNames[k]); // String contents = // directoryNames[i] + ", " + fileNames[k]; // file.create(new ByteArrayInputStream(contents.getBytes()), // true, new NullProgressMonitor()); // } // } // } // catch(Exception e){ // fail(e.toString()); // } // } // // private void verifyCompressed(String type){ // String fileName = ""; // boolean compressed = false; // try{ // if (ZIP_FILE_EXT.equals(type)){ // ZipFile zipFile = new ZipFile(filePath); // fileName = zipFile.getName(); // Enumeration entries = zipFile.entries(); // while (entries.hasMoreElements()){ // ZipEntry entry = (ZipEntry)entries.nextElement(); // compressed = entry.getMethod() == ZipEntry.DEFLATED; // } // zipFile.close(); // } // else{ // File file = new File(filePath); // InputStream in = new FileInputStream(file); // // Check if it's a GZIPInputStream. // try { // in = new GZIPInputStream(in); // compressed = true; // } catch(IOException e) { // compressed = false; // } // fileName = file.getName(); // in.close(); // } // } // catch (Exception e){ // fail(e.getMessage()); // } // assertTrue(fileName + " does not appear to be compressed.", compressed); // } // // private void verifyFolders(int folderCount, String type){ // try{ // List allEntries = new ArrayList(); // if (ZIP_FILE_EXT.equals(type)){ // ZipFile zipFile = new ZipFile(filePath); // Enumeration entries = zipFile.entries(); // while (entries.hasMoreElements()){ // ZipEntry entry = (ZipEntry)entries.nextElement(); // allEntries.add(entry.getName()); // } // zipFile.close(); // } // else{ // TarFile tarFile = new TarFile(filePath); // Enumeration entries = tarFile.entries(); // while (entries.hasMoreElements()){ // TarEntry entry = (TarEntry)entries.nextElement(); // allEntries.add(entry.getName()); // } // tarFile.close(); // } // if (flattenPaths) // verifyFiles(allEntries); // else // verifyArchive(folderCount, allEntries); // } // catch (Exception e){ // fail(e.getMessage()); // } // } // // private void verifyArchive(int folderCount, List entries){ // int count = 0; // Set folderNames = new HashSet(); // List files = new ArrayList(); // Iterator archiveEntries = entries.iterator(); // while (archiveEntries.hasNext()){ // String entryName = (String)archiveEntries.next(); // int idx = entryName.lastIndexOf("/"); // String folderPath = entryName.substring(0, idx); // String fileName = entryName.substring(idx+1, entryName.length()); // files.add(fileName); // int idx2 = folderPath.lastIndexOf("/"); // if (idx2 != -1){ // String folderName = folderPath.substring(idx2 + 1, folderPath.length()); // folderNames.add(folderName); // } // else // folderNames.add(folderPath); // // } // verifyFolders(folderNames); // verifyFiles(files); // count += folderNames.size(); // if (!flattenPaths && !excludeProjectPath) // folderCount++; // assertTrue( // "Number of folders expected and found not equal: expected=" + folderCount + ", actual=" + count, // folderCount == count); // // } // // private void verifyFiles(List files){ // Iterator iter = files.iterator(); // while (iter.hasNext()){ // String file = (String)iter.next(); // verifyFile(file); // } // } // // private void verifyFile(String entryName){ // for (int i = 0; i < fileNames.length; i++){ // boolean dotProjectFileShouldBePresent = ".project".equals(entryName) && !flattenPaths && !excludeProjectPath; // if (fileNames[i].equals(entryName) || dotProjectFileShouldBePresent) // return; // } // fail("Could not find file named: " + entryName); // } // // private void verifyFolders(Set folderNames){ // Iterator folders = folderNames.iterator(); // while (folders.hasNext()){ // String folderName = (String)folders.next(); // if (!isDirectory(folderName)){ // if (flattenPaths) // fail(folderName + " is not an expected folder"); // else if (!project.getName().equals(folderName)) // fail(folderName + " is not an expected folder"); // } // } // } // // private boolean isDirectory(String name){ // for (int i = 0; i < directoryNames.length; i++){ // if (directoryNames[i].equals(name)) // return true; // } // return false; // } // // private boolean isDirectory(IResource resource){ // for (int i = 0; i < directoryNames.length; i++){ // if (directoryNames[i].equals(resource.getName())) // return true; // } // return false; // } // // private boolean isFile(IResource resource){ // for (int i = 0; i < fileNames.length; i++){ // if (fileNames[i].equals(resource.getName())) // return true; // } // return false; // } // //}